package br.com.minilocadora.managedbean;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import br.com.minilocadora.modelo.Funcionario;
import br.com.minilocadora.service.FuncionarioService;

@Component("funcionarioBean")
@Scope("view")
public class FuncionarioBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 3327828790243249188L;

	private Funcionario funcionario;	
	
	@Autowired
	private FuncionarioService funcionarioService;
	
	private LazyFuncionario lazyFuncionario;

	public Funcionario getFuncionario() {
		if(funcionario == null)
		{
			funcionario = new Funcionario();
		}
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public FuncionarioService getFuncionarioService() {
		return funcionarioService;
	}

	public void setFuncionarioService(FuncionarioService funcionarioService) {
		this.funcionarioService = funcionarioService;
	}

	public LazyFuncionario getLazyFuncionario() {
		
		if(lazyFuncionario == null)
		{
			lazyFuncionario = new LazyFuncionario(funcionarioService);
		}
		
		return lazyFuncionario;
	}

	public void setLazyFuncionario(LazyFuncionario lazyFuncionario) {
		this.lazyFuncionario = lazyFuncionario;
	}
	
	
	public void salvarOuAlterar()
	{
		if(funcionario.getCodigo().equals(0))
		{
			try 
			{
				funcionarioService.incluir(this.funcionario);
			}
			catch (Exception e) 
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		else
		{
			try 
			{
				funcionarioService.alterar(this.funcionario);
			}
			catch (Exception e) 
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	
	
	
	@PostConstruct
	public void init()
	{
		System.out.println("init");
	}
	
	@PreDestroy
	public void destroy()
	{
		System.out.println("destroy");
	}
}
